package com.bookstore.test;

public class ThreadLocalTest2 implements Runnable {

	ThreadLocal<String> threadLocal = new ThreadLocal<String>();
	
	String threadName = null;
	int i = 0;

	@Override
	public void run() {
		for (; i < 10; i++) {
			/* synchronized关键字，代表这个方法加锁，
			 * 相当于不管哪一个线程（例如线程A），运行到这个方法时，都要检查有没有其它线程B（或者C、D等）正在用这个方法，
			 * 若有则要等正在使用synchronized方法的线程B（或者C、D）运行完这个方法后再运行此线程A，若没有则直接运行。
			 * synchronized (this) 对所在类加锁
			 */
			synchronized (this) {
				// currentThread 获取当前线程  ， 当前线程的名字
				threadName = Thread.currentThread().getName();
				
				try {
					Thread.sleep(10);
				} catch (InterruptedException e) {
					e.printStackTrace();
				}
				System.out.println(Thread.currentThread().getName() + ":" + threadName);
			}
		}
	}

	public static void main(String[] args) {
		ThreadLocalTest2 tlt = new ThreadLocalTest2();
		
		// 两个线程
		new Thread(tlt,"AAA").start();
		new Thread(tlt,"BBB").start();
	}
}
